package com.xnyzc.lhy.mis.service.cms.user.wallet;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xnyzc.lhy.common.exception.PangException;
import org.springframework.transaction.annotation.Transactional;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description 后台用户钱包管理
 * @Author zhuyubin
 * @Date 2019-08-20 16:00
 **/
public interface IOaSysUserWalletService {

    /**
     * 获取用户钱包记录
     * @param userId 用户id
     * @param type 权限等级
     * @param tag 租户
     * @param current 当前页
     * @param name 用户名
     * @param phone 手机号
     * @return
     */
    IPage<Map<String, Object>> seleceOaSysUserWallet(Long userId, List<String> type, String tag, Long current, String name, String phone, Long officeId);

    /**
     * 更新额度开关
     * @param sysUserId 操作人id
     * @param userIds 用户id
     * @param type 额度类型
     * @param switchType 修改状态
     * @param tag 租户
     * @return
     */
    String updateSwitch(Long sysUserId, List<Long> userIds, Integer type, Integer switchType, String tag);

    /**
     * 更新充值
     * @param sysUserId 操作人id
     * @param userIds 用户id
     * @param tag 租户
     * @param type 类型
     * @param money 金额
     * @return
     */
    @Transactional(rollbackFor = PangException.class)
    String updateMoney(Long sysUserId, List<Long> userIds, String tag, Integer type, BigDecimal money);

    /**
     * 获取用户钱包
     * @param sysUserId 后台用户
     * @param type 等级
     * @param current 当前页
     * @param tag 租户
     * @param name 姓名
     * @return
     */
    IPage<Map<String, Object>> selectUserWalletRecordPage(Long sysUserId, List<String> type, Long current, Long size, String tag, String name, String phone, String orderNo, Integer recordType);

    /**
     * 获取全部交易类型
     * @param tag
     * @return
     */
    List<Map<String, Object>> selectRecordTypeAll(String tag);
}
